package com.huazai.yangge.threadlocal;

/**
 * @author huazai
 * @date 2024/2/26
 */
public class ThreadLocalDemo {
    // threadLocal 实现每一个线程都有自己的专属本地变量，自己用自己的，不干扰别人
    public static void main(String[] args) {
        ThreadLocal<Integer> threadLocal = ThreadLocal.withInitial(() -> 0);
        Thread thread;


        // threadLocal内存泄漏问题
        // 什么是内存泄露：  占着坑位不拉屎
        // threadLocalMap 为什么继承弱引用

        //引用 强引用 软引用 弱引用 虚引用   TODO 没这么听懂 105

        // 1 记得初始化（不初始化容易空指针异常） 2、用了以后记得remove（避免内存泄露）

        // 对象实例构成：
        //     对象头：由对象标记和类元信息构成
        //         对象标记（markword）：通过标记为来区分对象头的状态
        //         类元信息（又叫类型指针）：
        //     实例数据：存放累的属性（字段）数据信息，包括父类的属性信息
        //     对齐填充：虚拟机要求起始地址必须是8字节的整数倍，填充数据不是必须存在的，仅仅是为了字节对齐这部分内存按8字节补充对齐


        // 分析java对象在虚拟机中的大小   用jol 库展示
    }
}
